package main

import (
	"fmt"
	"net/http"

	"github.com/fsnotify/fsnotify"
	"github.com/gin-gonic/gin"
	"github.com/spf13/viper"
)

func main() {
	// viper.SetConfigFile("./manifest/config.yaml")
	viper.SetConfigName("config") // 配置文件名称(无扩展名)
	viper.AddConfigPath("./manifest")

	err := viper.ReadInConfig() // 查找并读取配置文件
	if err != nil {
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}

	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.String(http.StatusOK, viper.GetString("version"))
	})

	// 将viper中的数据写入配置文件中，需要指定预定义路径，如果没有就会报错
	viper.WatchConfig()
	viper.OnConfigChange(func(e fsnotify.Event) {
		// 配置文件发生变化之后会调用的回调函数
		fmt.Println("Config file changed:", e.Name)
	})

	r.Run()

}
